package com.attcatstudy.Thread;

/**
 * @author attcat
 * ---做一个有趣的程序员
 * @date 2022-10-31 21:23
 * @description volatile有两大特性，一是可见性，二是有序性，禁止指令重排序，其中可见性就是可以让线程 之间进行通信。
 */
public class VolatileDemo {
    private static volatile boolean flag = true;

    public static void main(String[] args) {
        //2个线程来会调用
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    if(flag){
                        System.out.println("trun on");
                        flag = false;
                    }
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    if(!flag){
                        System.out.println("trun off");
                        flag = true;
                    }
                }
            }
        }).start();
    }
}
